package com.study.array;

/**
 * @author ytj
 * @date 2021/12/29
 */
public class Method14 {
    public static void main(String[] args) {
        String s="bbbb";
        int num=test(s);
        System.out.println(num);
    }

    public static int lengthOfLongestSubstring(String s) {
        int num=0;
        if(s.length()==1){
            return 1;
        }
        for(int i=0;i<s.length();i++){
            String result=s.charAt(i)+"";
            for(int j=i+1;j<s.length();j++){
                if(result.contains(s.charAt(j)+"")){
                    if(result.length()>num){
                        num=result.length();
                    }
                    break;
                }else{
                    result=result+s.charAt(j);
                    if(result.length()>num){
                        num=result.length();
                    }
                }
            }
        }
        return num;
    }

    public static int test(String s){
        // 记录字符上一次出现的位置
        int[] last = new int[128];
        for(int i = 0; i < 128; i++) {
            last[i] = -1;
        }
        int n = s.length();
        int res = 0;
        int start = 0; // 窗口开始位置
        for(int i = 0; i < n; i++) {
            int index = s.charAt(i);
            start = Math.max(start, last[index] + 1);
            res   = Math.max(res, i - start + 1);
            last[index] = i;
        }
        return res;
    }
}
